package com.ssd.controller;

import com.ssd.entity.SkuClassEntity;
import com.ssd.service.SkuClassService;
import com.ssd.utils.StringUtils;
import com.ssd.view.BaseResponse;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.Arrays;
import java.util.List;

/**
 * 商品类别控制层
 */
@RestController
@RequestMapping("/skuClass")
@Slf4j
public class SkuClassController {

    // 商品类别业务
    @Resource
    private SkuClassService skuClassService;

    // 分页查询商品类别列表
    @GetMapping("/list")
    public BaseResponse<List<SkuClassEntity>> getSkuPage(
            @RequestParam(defaultValue = "1") int pageNum,
            @RequestParam(defaultValue = "10") int pageSize,
            @RequestParam(required = false) String className){
        return new BaseResponse(skuClassService.getSkuClassList(pageNum, pageSize, className));
    }

    /**
     * 获取商品类型详细信息
     */
    @GetMapping("/{classId}")
    public BaseResponse<SkuClassEntity> getInfo(@PathVariable("classId") Long classId) {
        return new BaseResponse(skuClassService.selectSkuClassByClassId(classId));
    }

    /**
     * 新增商品类型
     */
    @PostMapping
    public BaseResponse<String> addSkuClass(@RequestBody SkuClassEntity skuClass) {
            return new BaseResponse(skuClassService.insertSkuClass(skuClass));
    }

    /**
     * 修改商品类型
     */
    @PutMapping
    public BaseResponse<String> updateSkuClass(@RequestBody SkuClassEntity skuClass) {
        return new BaseResponse(skuClassService.updateSkuClass(skuClass));
    }


    /**
     * 删除商品类型
     * @param classIdsStr
     * @return
     */
    @DeleteMapping("/{classIds}")
    public BaseResponse<String> batchDeleteSkuClass(@PathVariable("classIds") String classIdsStr) {
        Long[] classIds = StringUtils.isEmpty(classIdsStr) ?
                new Long[0] :
                Arrays.stream(classIdsStr.split(","))
                        .map(Long::parseLong)
                        .toArray(Long[]::new);
        return new BaseResponse(skuClassService.deleteSkuClassByClassIds(classIds));
    }
}